﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//交换两个变量（不创建临时变量）
//int main()
//{
//	int a, b;
//	scanf("%d %d", &a, &b);
//	a = a^b;
//	b = a^b;
//	a = a^b;
//	printf("%d %d", a, b);
//	system("pause");
//	return 0;
//}


//输入一个整数 n ，输出该数32位二进制表示中1的个数。其中负数用补码表示 // a&1 ==1 说明a的二进制最低位是1   ==0 则是0
//int main()
//{
//	int n = 0;
//	int count = 0;
//	scanf("%d", &n);
//	for (int i = 0; i < 32; i++)
//	{
//		if (((n >> i)&1) == 1)
//			count++;
//	}
//	printf("%d\n", count);
//	system("pause");
//	return 0;
//}

//什么时候考虑正负

//int count_twobit(unsigned int n)
//{
//	int count = 0;
//	while (n)
//	{
//		if (n % 2 == 1)
//			count++;
//		n = n / 2;
//	}
//}
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	int n = count_twobit(a);
//	printf("%d", n);
//	system("pause");
//	return 0;
//}

//int main()//把n的二进制中最右边的1去掉    
//{
//	int a = 0;
//	int count = 0;
//	scanf("%d", &a);
//	while (a)//每循环一次就减少一个1
//	{
//		a = a&(a - 1);
//		count++;
//	}
//	printf("%d", count);
//	system("pause");
//	return 0;
//}

//判断一个数n是否是2的次方数 （奇招）
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	if ((n&(n - 1)) == 0)
//	{
//		printf("yes\n");
//	}
//	else
//	{
//		printf("no\n");
//	}
//	system("pause");
//	return 0;
//}
//方法二
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int count = 0;
//	for (int i = 0; i < 32; i++)
//	{
//		if (((n >> i) & 1) == 1)
//		{
//			count++;
//		}
//	}
//	if (count == 1)
//	{
//		printf("yes\n");
//	}
//	else
//		printf("no\n");
//	system("pause");
//	return 0;
//}

//求两个整数二进制中不同位的个数
//int main()
//{
//	int a, b;
//	scanf("%d %d", &a, &b);
//	int count = 0;
//	int c = a^b;//^不相同为1 计算c中1个数即可
//	while (c)
//	{
//		c = c&(c - 1);
//		count++;
//	}
//	printf("%d\n", count);
//	system("pause");
//	return 0;
//}

//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
//void print(int a)
//{
//	for (int i = 31; i >=0; i--)  
//	{
//		printf("%d", (a >> i) & 1);
//	}
//	printf("\n");
//	for (int i = 31; i >= 0; i -= 2)//奇数位
//	{
//		printf("%d", (a >> i) & 1);
//	}
//	printf("\n");
//
//	for (int i = 30; i >= 0; i -= 2)//偶数位
//	{
//		printf("%d", (a >> i) & 1);
//	}
//	printf("\n");
//
//}
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	print(a);
//	system("pause");
//	return 0;
//}



//int main()
//{
//	int num  ;
//	scanf("%d", &num);
//	int count = 0;//计数
//	while ((unsigned int)num)
//	{
//		if (num % 2 == 1)//获得二进制32位整形的最后一位
//			count++;
//		num = num / 2;//去除二进制32位整形的最后一位
//	}
//	printf("%d\n", count);
//	system("pause");
//	return 0;
//}
//
//int count_twobit(unsigned int n)
//{
//	int count = 0;
//	while (n)
//	{
//		if (n % 2 == 1)
//			count++;
//		n = n / 2;
//	}
//	return count;
//}
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	int n = count_twobit(a);
//	printf("%d", n);
//	system("pause");
//	return 0;
//}